#ifndef __APP_BLUETOOTH_H
#define __APP_BLUETOOTH_H
#include "app/app_serial.h"

//蓝牙的波特率设置
typedef enum
{
    BT_Baud_9600 = '4',
    BT_Baud_19200 = '5',
    BT_Baud_38400 = '6',
    BT_Baud_57600 = '7',
    BT_Baud_115200 = '8'
}BT_Buad;


/// @brief 检测蓝牙的状态
/// @param serial_device 
/// @return 成功0  失败-1
int app_bluetooth_status(SerialDevice *serial_device);


/// @brief 设置蓝牙的波特率
/// @param serial_device 蓝牙
/// @param band 波特率
/// @return 成功0  失败-1
int app_bluetooth_setBtBuad(SerialDevice * serial_device,BT_Buad band);

/// @brief 重启蓝牙设备
/// @param serial_device 
/// @return 成功0  失败-1
int app_bluetooth_reset(SerialDevice * serial_device);


/// @brief 设置蓝牙的组id
/// @param serial_device 设备
/// @param id 要设置的id
/// @return 成功0  失败-1
int app_bluetooth_setId(SerialDevice * serial_device,char *id);


/// @brief 设置蓝牙的独一地址
/// @param serial_device 设备
/// @param addr 要设置的地址
/// @return 成功0  失败-1
int app_bluetooth_setAddr(SerialDevice * serial_device,char *addr);


/// @brief 把设备的连接方式 设在成蓝牙 并且设置两边的一些属性 比如波波特率这些
/// @param serial_device 
/// @return 
int app_bluetooth_setConnectionType(SerialDevice *serial_device);


/// @brief 这个函数用这把上游的通讯设备给出的数据变成我们这个蓝牙需要的格式
/// @param device 设备
/// @param buf 数据
/// @param len 数据的长度
/// @return 成功返回处理后的数据长度  失败返回-1
int app_bluetooth_psetWrite(Device *device,void *buf,int len);


/// @brief 这个函数用这把接收到的数据变成上有串口设备需要的数据格式
/// @param device 设备
/// @param buf 数据
/// @param len 数据的长度
/// @return 成功返回处理后的数据长度  失败返回-1
int app_bluetooth_psetRead(Device *device,void *buf,int len);

/**
 * 上游设备需要的格式
 * 字节1   connect_type 和下游司马类型设备连接
 * 字节2   id_len       id的长度
 * 字节3   mag_len      实际数据的长度
 * 字节4 ～  id + mag
 * 
 * 
 * 蓝牙接收的数据
 * 字节1～2  0XF1 0XDD  
 * 字节2     剩下的数据帧的长度
 * 字节3-4   对面的addr地质（也可以较id）
 * 字节5-6   我们的addr地址
 * 字节7～    实际数据
 * 
 * 
 * 蓝牙发送的数据
 * 字节 1-8 “AT+MESH\0”
 * 字节 9-10 对面ADDR
 * 字节 11-n 具体数据
 * 字节 n+1- n+2  "\r\n"
 */


#endif // !__APP_BLUETOOTH_H
